package util

import (
	"encoding/json"

	jsonPatch "github.com/evanphx/json-patch/v5"
)

// UnmarshalJSON 带泛型的json解析
func UnmarshalJSON[T any](data []byte) (*T, error) {
	var v T
	return &v, json.Unmarshal(data, &v)
}

// ApplyJSONPatch 对json应用patch操作
func ApplyJSONPatch(doc []byte, patch []byte) ([]byte, error) {
	if p, err := jsonPatch.DecodePatch(patch); err != nil {
		return nil, err
	} else {
		return p.Apply(doc)
	}
}
